<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>送花</title>
</head>
<body>
    <script>
        // chrome 最快的浏览器
        // 浏览器 上网代理，运行页面时，js 的宿主环境
        // 作用域 
        function func(){
            let c=3;//局部变量
        }
        //全局变量
        //变量名 地址的映射 属于运行环境的作用域 
        // 空间大小 整数空间
        let d;// undefined 没有值， 类型未定义，空间起始地址不确定
        // 空间大小未确定
        var a=1;//var es5 及之前 js变量常量声明的关键字
        let b=2;//es6 之后提供的 let const
        // const name="菠萝头";
        // let age=19;
        // const hometown="南昌";
        // const sex="女";
        // 除了简单数据类型之外的 一切都是对象
        // 对象 字面量
        /*
        * 函数名大写，类的构造函数
        */
    //    class Flower{
    //        constructor(){

    //        }
    //    }
    // 类的构造函数
        function Flower(type,num){
            // 指针
            // this 指向构造函数运行时的对象
            console.log(this);
            this.type=type;
            this.num=num;
        }
        // 构造对象时就指向哪个
        const ych=new Flower('油菜花',1);
        console.log(ych.type);
        const rose=new Flower('玫瑰花',11);
        console.log(rose.type,rose.num);
        const obj={
            name:"菠萝头",
            age:19,
            hometown:"南昌",
            sex:"女"
        }
        // 对象字面量 talk in js
        const blt={
            name:'吸氧羊',
            age:20,
            hometown:'九江',
            sex:'女',
            isSingle:true,
            bf:null,
            work_status:undefined,
            // 参数
            // sendFlower(target){
            //     // let xx=1;
            //     // console.log(target)
            //     // 送花代码？
            //     // target 类型是对象，对象上有sendFlower方法
            //     target.receieveFlower(blt);
            // }
            sendFlower(target){
                // this 属于函数
                // this 指向对象
                const flower =new Flower('红玫瑰',99);
                // console.log(this);
                target.receieveFlower(this, flower);
            }
            // sendFlower(a,b,c){
            //     b.getFlower(a,b,c);
            // }
        }
        // 送花
        // 对象由哪两部分组成？ 属性 方法
        //女主角
        // [] 数组 {} 对象
        const xiaomi={
            name:'小米',
            age:18,
            // getFlower(a,b,c){
            //     console.log('收到了'+a.name+'送的花');
            // },
            receieveFlower(sender,flower){
                // 代码可读性，如果很长，换行
                console.log('收到了' + sender.name + '送的' 
                    + flower.num + '朵' + flower.type );
            }
        }

        //老乡和小美是室友，
        // 代理人 
        const xiaohong={
            name:"小红",
            hometown:'九江',
            // 接口 代理者
            receieveFlower(sender,flower){
                // console.log("who？");
                // console.log(this.name+'收到了'+target.name+'送的花');
                // target.receieveFlower(blt);
                // if(sender.name=='吸氧羊'){
                //     console.log("好的");
                // }
                // 小红拥有和小米一样的接口方法
                // 代替小米收花
                if(sender.yz<90){
                    console.log('不收......')
                }else{
                    console.log('万达');
                    xiaomi.receieveFlower(sender,flower);
                }
            },
            // getFlower(a,b,c){
            //     console.log("wo");
            //     b.sendFlower(a,b,c);
            // },
            // sendFlower(a,b,c){
            //     c.getFlower(a,b,c);
            // }
        } 
        blt.sendFlower(xiaohong);
        // blt.sendFlower(blt,xiaohong,xiaomi);
        // blt.sendFlower(xiaohong);
        // blt.sendFlower(xiaomi);
        // console.log(xx);
    </script>
</body>
</html>